<?php

/**
 * Classe représentant un enseignant.
 * @author LESAGE Alexandre
 * @since 25 septembre 2013
 * @version 1.0
 */

class Enseignant
{
		/* Attributs */
	/**
	 * Ideentifiant et login de l'enseignant.
	 * @var string
	 */
	private $_login;
	/**
	 * Nom de l'enseignant.
	 * @var string
	 */
	private $_nom;
	/**
	 * Prenom de l'enseignant.
	 * @var string
	 */
	private $_prenom;
	/**
	 * Mail de l'enseignant.
	 * @var string
	 */
	private $_mail;
		/* Constructeurs & Destructeurs */
	public function __construct()
	{
		$args = func_get_args();

		switch(func_num_args())
		{
			case 1 : // LOGIN_PROF
				$this->set_login($args[0]);
				break;
			case 2 : // NOM_PROF, PRENOM_PROF
				$this->set_nom($args[0]);
				$this->set_prenom($args[1]);
				break;
			case 4 :
				$this->set_login($args[0]);
				$this->set_nom($args[1]);
				$this->set_prenom($args[2]);
				$this->set_mail($args[3]);
				break;
			default:
				trigger_error('Constructeur de Enseignant avec ' + func_num_args() + ' non dÃ©fini.');
				break;
		}
	}

	/*Methode Base de données*/
	public static function getAllEnseigant()
	{
		$enseignant = false;
		
		// On se connecte  à  la BDD
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(REQ_ALL_PROF.' ORDER BY '.NOM_PROF); // On lance la requÃªte
		$donnees = $donnees->fetchAll(); // On recupère toutes les données sous forme d'un tableau associatif

		foreach($donnees as $d)
		{
			$enseignant[] = new Enseignant($d[LOGIN_PROF], $d[NOM_PROF], $d[PRENOM_PROF], $d[MAIL_PROF]);
		}

		return $enseignant;
	}
	
	public function getOneEnseignant()
	{
		// On se connecte  à  la BDD
		$bdd = PDO2::getInstance();
		$d = $bdd->query(REQ_ALL_PROF.' WHERE '.LOGIN_PROF.' =\''.$this->get_login().'\'');
		$d = $d->fetch();
		
		$this->set_nom($d[NOM_PROF]);
		$this->set_prenom($d[PRENOM_PROF]);
		$this->set_mail($d[MAIL_PROF]);
		
	}
	
	public function saveOneEnseignant()
	{
		$bdd = PDO2::getInstance();
		$result = $bdd->exec('INSERT INTO '.TABLE_PROF.'('.LOGIN_PROF.', '.NOM_PROF.', '.PRENOM_PROF.', '.MAIL_PROF.')
				VALUES("'.$this->get_login().'", UPPER("'.$this->get_nom().'"), "'.$this->get_prenom().'", "'.$this->get_mail().'")');
		
		if($result == 0)
			return false;
		else
			return true;
	}
	
	public function modifOneEnseignant()
	{
		$bdd = PDO2::getInstance();
		$result= $bdd->exec(
				'UPDATE '.TABLE_PROF.'
				SET '.NOM_PROF.' = "'.$this->get_nom().'", '.PRENOM_PROF.' = "'.$this->get_prenom().'", '.MAIL_PROF.' = "'.$this->get_mail().'"
				WHERE '.LOGIN_PROF.' = "'.$this->get_login().'"');
	
		if($result == 0)
			return false;
		else
			return true;
	}
	
	public function delOneEnseignant()
	{
		$bdd = PDO2::getInstance();
		$result = $bdd->exec(
				'DELETE FROM '.TABLE_PROF.
				' WHERE '.LOGIN_PROF.' = "'.$this->get_login().'"');
		if($result == 0)
			return false;
		else
			return true;
	}
	
	public static function enseignant_exist($userLogin)
	{
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(	'
				SELECT *
				FROM '.TABLE_PROF.'
				WHERE '.LOGIN_PROF.' = \''.$userLogin.'\'
				');
		if($donnees->rowCount() == 1)
			return true;
		else
			return false;
	}


	/* Getteurs & Setteurs */
	/**
	 * Fonction permettant de récupérer l'identifiant et login de l'enseignant.
	 * @access public
	 * @return string $_login
	 */
	public function get_login()
	{
		return $this->_login;
	}

	/**
	 * Fonction permettant de modifier l'identifiant et login de l'enseignant.
	 * @access public
	 * @parram string $_login
	 */
	public function set_login($login)
	{
		$this->_login=$login;
	}

	/**
	 * Fonction permettant de récupérer le nom de l'enseignant.
	 * @access public
	 * @return string $_nom
	 */
	public function get_nom()
	{
		return $this->_nom;
	}

	/**
	 * Fonction permettant de modifier le nom de l'enseignant.
	 * @access public
	 * @param string $_nom
	 */
	public function set_nom($nom)
	{
		$this->_nom=$nom;
	}

	/**
	 * Fonction permettant de récupérer le prenom de l'enseignant.
	 * @access public
	 * @return string $_prenom.
	 */
	public function get_prenom()
	{
		return $this->_prenom;
	}

	/**
	 * Fonction permettant de modifier le prenom de l'enseignant.
	 * @access public
	 * @param string $_prenom.
	 */
	public function set_prenom($prenom)
	{
		$this->_prenom=$prenom;
	}
	
	/**
	 * Fonction permettant de récupérer le mail de l'enseignant.
	 * @access public
	 * @return string
	 */
	public function get_mail()
	{
		return $this->_mail;
	}
	
	/**
	 * Fonction permettant de modifier le mail de l'enseignant.
	 * @access public
	 * @param string
	 */
	public function set_mail($mail)
	{
		$this->_mail=$mail;
	}
}
?>